Skip to content

feat(react-playground): add Execution Target and User Event Triggers prototypes#780

Open
bogdandoaga wants to merge 1 commit into
UiPath:mainfrom
bogdandoaga:feat/playground-prototypes-event-triggers
Open

feat(react-playground): add Execution Target and User Event Triggers prototypes#780
bogdandoaga wants to merge 1 commit into
UiPath:mainfrom
bogdandoaga:feat/playground-prototypes-event-triggers

Conversation

@bogdandoaga

@bogdandoaga bogdandoaga commented Jun 4, 2026

Copy link
Copy Markdown

Summary

Two new prototype pages in the react-playground under /prototypes/, plus an Orchestrator-style sidebar replacement.

Execution Target prototype (/prototypes/execution-target)

Explores renaming and restructuring the execution target options:

  • Toggle between Cross-platform / Windows process types
  • Three radio card options: Dynamically allocated, Specific user, Inherit parent job identity (renamed from "Run As Myself")
  • Rename badge and Windows-specific warning callout

User Event Triggers prototype (/prototypes/user-event-triggers)

Extends the Orchestrator Event Triggers grid for triggers marked "Configurable by users":

  • Expandable rows — chevron reveals a per-user sub-table (user, connection, state, last run)
  • Side panel — opens on click anywhere on a row (both parent trigger rows and individual user trigger rows), with Jobs / History / Traces tabs and per-item mock data
  • Fixed-position ⋮ menu — escapes table overflow clipping via getBoundingClientRect()
  • Empty state for triggers with no user instances yet

Sidebar

  • Replaced Core / Components / Material Overrides navigation with an Orchestrator-style folder tree (search, expand/collapse, 19 mock folders)
  • Prototypes section pinned at bottom with links to both prototypes

🤖 Generated with Claude Code

…prototypes

- Add ExecutionTargetPrototype (/prototypes/execution-target) for OR-92995:
  toggle between Cross-platform / Windows, three execution target options
  with rename badge for "Inherit parent job identity"

- Add UserEventTriggersPrototype (/prototypes/user-event-triggers):
  Orchestrator-style Event Triggers grid with expandable rows for
  "Configurable by users" triggers, per-user sub-table, side panel with
  Jobs / History / Traces tabs (opens on row click for both parent
  triggers and individual user trigger rows), fixed-position ⋮ action
  menu escaping table overflow

- Replace Core/Components/Material sidebar nav with Orchestrator-style
  folder tree (search, expand/collapse, 19 mock folders)

- Adjust MainContent margin-left to match 220px sidebar width

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 4, 2026 15:14

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds two new React “prototype” pages to the react-playground and updates the app shell navigation to better mimic an Orchestrator-like sidebar (folder tree + prototypes section).

Changes:

  • Added ExecutionTargetPrototype (OR-92995) and UserEventTriggersPrototype prototype pages.
  • Updated App routing to expose the new prototypes under /prototypes/*.
  • Reworked the sidebar UI + styles (new folder tree mock + prototypes links) and resized the main layout accordingly.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
apps/react-playground/src/pages/prototypes/UserEventTriggersPrototype.tsx Adds a large prototype grid with expandable user triggers, row action menu, and a right-side details panel.
apps/react-playground/src/pages/prototypes/ExecutionTargetPrototype.tsx Adds an OR-92995 UI prototype for execution identity option renaming + Windows warning callout.
apps/react-playground/src/components/Sidebar.tsx Replaces the old nav with an Orchestrator-like sidebar (top nav, folder tree, prototypes list).
apps/react-playground/src/components/Sidebar.styles.tsx Implements new sidebar styling primitives and keeps legacy exports as empty placeholders.
apps/react-playground/src/App.tsx Registers new prototype routes.
apps/react-playground/src/App.styles.tsx Adjusts main content offset to match new sidebar width.

Comment on lines +1268 to +1274
{filteredTriggers.map((trigger) => {
const expanded = expandedRows.has(trigger.id);

return (
<>
<GridRow
key={trigger.id}
Comment on lines +1704 to +1719
const trigger = MOCK_TRIGGERS.find((t) => t.id === openMenu);
return MENU_ITEMS.map((item, idx) =>
item === null ? (
<MenuDivider key={`div-${idx}`} />
) : (
<MenuItem
key={item}
$danger={item === "Remove"}
$disabled={item === "Enable" && trigger?.state === "active"}
onClick={() => {
if (item === "View jobs" || item === "View history" || item === "View traces") {
const tab = item === "View jobs" ? "Jobs" : item === "View history" ? "History" : "Traces";
openPanel(openMenu, tab as "Jobs" | "History" | "Traces");
}
setOpenMenu(null);
}}
Comment on lines +1681 to +1686
<SPPagination>
<SPPageBtn disabled>⟨⟨</SPPageBtn>
<SPPageBtn disabled>⟨</SPPageBtn>
<span>
1 – {(panelTab === "Jobs" ? MOCK_JOBS[panelDataKey] : MOCK_HISTORY[panelDataKey])?.length ?? 0} / {(panelTab === "Jobs" ? MOCK_JOBS[panelDataKey] : MOCK_HISTORY[panelDataKey])?.length ?? 0}
</span>
Comment on lines +1277 to +1278
onClick={() => openPanel(trigger.id, "Jobs")}
style={{ cursor: "pointer" }}
Comment on lines +1302 to +1305
<TriggerName
title={trigger.name}
onClick={() => openPanel(trigger.id, "Jobs")}
>
</SPGridHead>
{jobs.map((job, i) => (
<SPGridRow key={i}>
<input type="checkbox" style={{ margin: "auto" }} />
Comment on lines +383 to +388
const GridRow = styled.tr<{ $expanded: boolean; $configurable: boolean }>`
border-bottom: 1px solid var(--color-border-de-emp);
background: ${({ $expanded }) =>
$expanded ? "var(--color-background-selected)" : "var(--color-background-raised)"};
border-left: 3px solid ${({ $expanded }) =>
$expanded ? "var(--color-primary)" : "transparent"};
Comment on lines +158 to +167
&:hover {
border-color: ${({ $selected, $disabled }) =>
$disabled ? "var(--color-border-de-emp)" : $selected ? "var(--color-primary)" : "var(--color-border)"};
background: ${({ $selected, $disabled }) =>
$disabled
? ""
: $selected
? "var(--color-background-selected)"
: "var(--color-background-secondary)"};
}
Comment on lines +114 to +117
// Filter: show node if it or any descendant matches search
const selfMatches = matchesSearch(node.label);
const childMatches = node.children?.some((c) => matchesSearch(c.label));
if (!selfMatches && !childMatches) return null;
Comment on lines +263 to +271
// Keep these exports so nothing that imports them breaks
export const NavSection = styled.div``;
export const NavLink = styled(Link)<{ $isActive: boolean }>``;
export const NavIcon = styled.span``;
export const NavLabel = styled.span``;
export const ParentNavButton = styled.button<{ $isActive: boolean }>``;
export const ChevronIcon = styled.span<{ $isExpanded: boolean }>``;
export const SubNav = styled.div<{ $isExpanded: boolean }>``;
export const SubNavLink = styled(Link)<{ $isActive: boolean }>``;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants